using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._AviationTools._Charting._DataManagement
{
    /// <summary>
    /// <para>Process Air Traffic Service Routes</para>
    /// <para>Identifies, generalizes, and offsets overlapping Air Traffic Service (ATS) routes.</para>
    /// <para>识别、概括和偏移重叠的空中交通服务 （ATS） 航线。</para>
    /// </summary>    
    [DisplayName("Process Air Traffic Service Routes")]
    public class ProcessAirTrafficServiceRoutes : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public ProcessAirTrafficServiceRoutes()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_route_features">
        /// <para>Input Route Features</para>
        /// <para>The polyline feature layer containing air traffic service (ATS) route data. This data will be used to update features in the Target Cartographic Route Features feature layer.</para>
        /// <para>包含空中交通服务 （ATS） 路径数据的折线要素图层。此数据将用于更新目标制图路径要素要素图层中的要素。</para>
        /// </param>
        /// <param name="_target_carto_route_features">
        /// <para>Target Cartographic Route Features</para>
        /// <para>The cartographic feature layer containing air traffic service (ATS) routes. The attributes of these features will be modified to simplify the display of overlapping routes.</para>
        /// <para>包含空中交通服务 （ATS） 路径的制图要素图层。将修改这些要素的属性，以简化重叠路径的显示。</para>
        /// </param>
        /// <param name="_aoi_features">
        /// <para>Area of Interest Features</para>
        /// <para>The polygon feature class containing area of interest (AOI) features.</para>
        /// <para>包含感兴趣区域 （AOI） 要素的面要素类。</para>
        /// </param>
        /// <param name="_preference_table">
        /// <para>Preference Table</para>
        /// <para>The table of preferences that control how air traffic service (ATS) routes are processed.</para>
        /// <para>控制如何处理空中交通服务 （ATS） 路由的首选项表。</para>
        /// </param>
        /// <param name="_preference">
        /// <para>Preference</para>
        /// <para>The name of a preference from the Preference Table parameter. The preference controls how air traffic service (ATS) routes are processed.</para>
        /// <para>首选项表参数中的首选项的名称。首选项控制空中交通服务 （ATS） 路线的处理方式。</para>
        /// </param>
        public ProcessAirTrafficServiceRoutes(object _in_route_features, object _target_carto_route_features, object _aoi_features, object _preference_table, object _preference)
        {
            this._in_route_features = _in_route_features;
            this._target_carto_route_features = _target_carto_route_features;
            this._aoi_features = _aoi_features;
            this._preference_table = _preference_table;
            this._preference = _preference;
        }
        public override string ToolboxName => "Aviation Tools";

        public override string ToolName => "Process Air Traffic Service Routes";

        public override string CallName => "aviation.ProcessAirTrafficServiceRoutes";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_route_features, _target_carto_route_features, _aoi_features, _preference_table, _preference, _updated_carto_route_features];

        /// <summary>
        /// <para>Input Route Features</para>
        /// <para>The polyline feature layer containing air traffic service (ATS) route data. This data will be used to update features in the Target Cartographic Route Features feature layer.</para>
        /// <para>包含空中交通服务 （ATS） 路径数据的折线要素图层。此数据将用于更新目标制图路径要素要素图层中的要素。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Route Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_route_features { get; set; }


        /// <summary>
        /// <para>Target Cartographic Route Features</para>
        /// <para>The cartographic feature layer containing air traffic service (ATS) routes. The attributes of these features will be modified to simplify the display of overlapping routes.</para>
        /// <para>包含空中交通服务 （ATS） 路径的制图要素图层。将修改这些要素的属性，以简化重叠路径的显示。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Target Cartographic Route Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _target_carto_route_features { get; set; }


        /// <summary>
        /// <para>Area of Interest Features</para>
        /// <para>The polygon feature class containing area of interest (AOI) features.</para>
        /// <para>包含感兴趣区域 （AOI） 要素的面要素类。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Area of Interest Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _aoi_features { get; set; }


        /// <summary>
        /// <para>Preference Table</para>
        /// <para>The table of preferences that control how air traffic service (ATS) routes are processed.</para>
        /// <para>控制如何处理空中交通服务 （ATS） 路由的首选项表。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Preference Table")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _preference_table { get; set; }


        /// <summary>
        /// <para>Preference</para>
        /// <para>The name of a preference from the Preference Table parameter. The preference controls how air traffic service (ATS) routes are processed.</para>
        /// <para>首选项表参数中的首选项的名称。首选项控制空中交通服务 （ATS） 路线的处理方式。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Preference")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _preference { get; set; }


        /// <summary>
        /// <para>Updated Cartographic Route Features</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Cartographic Route Features")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _updated_carto_route_features { get; set; }


        public ProcessAirTrafficServiceRoutes SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}